#ifndef DOUBLE_LINKED_LIST
#define DOUBLE_LINKED_LIST

#include "object.h"

class Node
{
public:
	Node(Object *, Node *, Node *);
	~Node();
//	Object *OBJECT;
//	Node *PREVIOUS;
//	Node *NEXT;
	Node *next();
	Node *previous();
	Object *object();
	void setNext(Node *);

private:
	Node *NEXT;
	Node *PREVIOUS;
	Object *OBJECT;
};

class Double_Linked_List
{
public:
	Double_Linked_List();
	~Double_Linked_List();
	bool contains(Object *);
	bool isEmpty();
	int size();
	Object *isAt(int);
	Object *pop();
	Node *head();
	Node *node(int);
	Node *tail();
	void add(Object *);
	void push(Object *);
	void remove(Object *);
	
private:
	Node *HEAD;
	Node *TAIL;
	int SIZE;
};

#endif
